import { fileURLToPath, URL } from 'node:url'

import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import { viteMockServe } from 'vite-plugin-mock'
// import path from 'path'

// https://vitejs.dev/config/
export default defineConfig(({ command, mode }) => {
  const env = loadEnv(mode, __dirname)
  // console.log(env)
  return {

    plugins: [
      vue(),
      vueJsx(),
      viteMockServe({
        logger: false,
        // mockPath: "./mock/",   // 测试模式 注意：此时的 mockPath 地址是真正安装的 mock 文件夹的地址;        
        // mockPath: "./src/mock/source", // 解析，路径可根据实际变动  // 生产模式【或者直接写到env 中】
        // enable: true, // 是否开启：生产环境下无效

        mockPath: env.VITE_MODE === 'production' ? "./src/mock/source" : "./mock/",
        enable: env.VITE_MOCK_ENABLE === 'true' ? true : false,
      })
    ],

    base: env.VITE_MODE === 'production' ? './' : '/',

    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url))
      }
    },

    build: {
      sourcemap: false, // 不生成 source map 
      minify: 'terser',
      terserOptions: { 
        compress: { // 打包时清除 console 和 debug 相关代码
          drop_console: true,
          drop_debugger: true,
        },       
      },
    },

    // server
    server: {
      host: '0.0.0.0',   // 'localhost' ，配置 0.0.0.0 则可以出现2个ip
      port: 8080,          // 5173 
      open: true,       
      // proxy: {
      //   '/api': {
      //     target: env.VITE_URL, 
      //     changeOrigin: true, 
      //     ws: true, // 支持 websocket
      //     rewrite: (path) => path.replace(/^\/api/, '') // 路径重写
      //   }
      // }
    }
  }
})
